<?php
namespace Admin\Controller;

class RoleController extends AdminController {
    //为角色分配权限
    public function nodelist()
    {   //查找该角色信息
        $role = D('role')->field("name,id")->where(array('id'=>array('eq',I('id'))))->find();
        // $role = $this->D('role_node')->where(array('id'=>));
        $nodes = D('node')->where(array('status'=>array('eq',1)))->select();
        // 查出角色对应的权限
        $ro_node = D('role_node')->where(array('rid'=>array('eq',$role['id'])))->select();
        // var_dump($nodes);exit;
        $ro_nodes = array();
        foreach ($ro_node as $val) {
            $ro_nodes[] = $val['nid'];
        }
        // 数组变形,让控制器和方法对应
            $list = array();
            foreach ($nodes as $val) {
                $list[] = $val['mname'];
            }
            
            $list = array_unique($list);
            // var_dump($list);
            $newlist = array();
            $i = 0;

            foreach ($nodes as $key => $val) {

                    $newlist[$val['mname']][$i][0] = $val['id'];
                    $newlist[$val['mname']][$i][1]= $val['name'];
                    $i++;
                
            }
           

        //向模板分配所有节点
        $this->assign('nodes',$newlist);
        $this->assign('role',$role);
        $this->assign('ro_nodes',$ro_nodes);
        //加载模板
        $address = '分配节点';
        $this->assign('address',$address);
        $this->display('Role/nodelist');
    }
    //保存权限修改页面
    public function savenode()
    {
        if (empty($_POST['node'])) {
            $this->error('必须选择一个节点');
        }
   
        $rid = $_POST['rid'];
        //删除该角色的所有信息 避免重复
        $m = D('role_node');
        $m->where(array('rid'=>array('eq',$rid)))->delete();
       //循环添加
       foreach($_POST['node'] as $v){
        $data['nid'] = $v;
        $data['rid'] = $rid;
        $m->data($data)->add();
       }
        $this->success('保存成功',U('Role/index'));
    }


    // role添加页面
    public function add()
    {
        $address = '角色添加';
        $this->assign('address',$address);
        $this->display('Role/add');
    }
    // 执行添加
    public function insert()
    {
           //过滤数据  未完成  
        $User = D('role');
           
         if (!$User->create()) {
                //如果创建失败  表示验证没有通过 输出错误提示信息
                $this->error($User->getError());
            } else {
                //验证通过
                // echo '1';
              $result = D('role')->add();
                if ($result) {
                    $this->success('添加成功',U('Role/index'));
                } else {
                    $this->error('添加失败...');
                }
            }
    }
    //编辑role
        public function edit($id)
        {
            $id = I('get.id/d');
            // echo $id;
            //查数据
            $data = D('role')->find($id);
            // var_dump($data);exit;    
         
            $this->assign('data',$data);
           // var_dump($data) ;exit;
            $address = '角色编辑';
            $this->assign('address',$address);
            $this->display('Role/edit'); 
        }
        //执行角色修改执行
        public function save()
        {
            //判断有无传递POST   这里注意,要过滤用户的富文本数据
            if (empty($_POST)) {
                $this->error('请完善数据');
                exit;
            }
            // var_dump($_POST);exit;
            // $id = 'id='.$_POST['id'];
            $role_save = D('role');
            if(!$role_save->create()){
                $this->error($role_save->getError());
            }else{
                //验证通过
                
                $result = $role_save->save();
                // echo $result;exit;
                if ($result >0 )
                {
                     $this->success('编辑成功',U('Role/index'));
                }else{
                    $this->error('编辑失败');
                }
            }
        }


    //角色列表
    public function index(){
        $rolelist = D('role')->select();
        $this->assign('rolelist',$rolelist);

        $address = '角色列表';
        $this->assign('address',$address);
        $this->display('Role/index');
    }
     //角色表切换状态
       public function role_status(){
        // 调用函数
            changedenied($_GET['id'],'status',$_GET['status'],'role');
       }

       // 删除角色
            public function del()
    {
        //判断 有无 传递ID
        if (empty($_GET['id'])) {
            echo '你没有传ID';
            exit;
        }
        //接收ID
        // $id = $_GET['id'];
            $id = I('get.id/d');

            // 执行删除
           
            if (D('role')->delete($id)>0) {
                //ajax
               echo '删除成功';
            } else {
                echo '删除失败';
            }
    }
}